using System;
using System.Collections.Generic;
using System.Text;
using MacomberMap.Common.Components;
using System.ComponentModel;
using System.Drawing;
using MacomberMap.Common.Convertors;

namespace MacomberMap.Loader.User_Interfaces.Network_Map.Editor
{
    /// <summary>
    /// This class provides an interface to a boundary
    /// </summary>
    public class MM_Editor_Boundary: MM_Editor_Element
    {       
        #region Variable interfaces

        /// <summary>
        /// The website for the boundary
        /// </summary>
        [Category("Display"), Description("The website for the boundary")]
        public String Website
        {
            get { return ((MM_Boundary)BaseElement).Website; }
            set { ((MM_Boundary)BaseElement).Website = value; }
        }

        /// <summary>
        /// The highest latitude and longitude
        /// </summary>
        [Category("Location"), Description("The highest latitude and longitudes"), TypeConverter(typeof(MM_PointF_Converter))]
        public PointF Max
        {
            get { return ((MM_Boundary)BaseElement).Max; }
            set { ((MM_Boundary)BaseElement).Max = value; }
        }

        /// <summary>
        /// The lowest latitude and longitude
        /// </summary>
        [Category("Location"), Description("The lowest latitude and longitudes"), TypeConverter(typeof(MM_PointF_Converter))]
        public PointF Min
        {
            get { return ((MM_Boundary)BaseElement).Min; }
            set { ((MM_Boundary)BaseElement).Min = value; }
        }

        /// <summary>
        /// The average of the latitudes and longitudes
        /// </summary>
        [Category("Location"), Description("The average of the latutudes and longitudes"), TypeConverter(typeof(MM_PointF_Converter))]
        public PointF Centroid
        {
            get { return ((MM_Boundary)BaseElement).Centroid; }
            set { ((MM_Boundary)BaseElement).Centroid = value; }
        }

        /// <summary>
        /// The latitudes and longitudes comprising the boundary
        /// </summary>
        [Category("Location"), Description("The latutudes and longitudes comprising the boundary")]
        public PointF[] Coordinates
        {
            get { return ((MM_Boundary)BaseElement).Coordinates; }
            set { ((MM_Boundary)BaseElement).Coordinates = value; }
        }
        #endregion

        #region Initialization
        /// <summary>
        /// Initialize a new editor's implementation of a boundary
        /// </summary>
        /// <param name="BaseBoundary"></param>
        public MM_Editor_Boundary(MM_Boundary BaseBoundary): base(BaseBoundary)
        {
            
        }
        #endregion
    }
}
